package com.java.common.lang.domain.entity;

import java.math.BigDecimal;
import java.util.Date;

import javax.validation.constraints.Pattern;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.java.common.lang.annotation.Encrypt;
import com.java.common.lang.annotation.Excel;
import com.java.common.lang.annotation.FileData;
import com.java.common.lang.domain.BaseEntity;

/**
 * 用户管理对象 user
 * 
 * @author Administrator
 * @date 2021-02-23
 */
@FileData
@Encrypt
public class User extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 用户ID */
    private Long uid;

    /** 平台类型：1安卓 2苹果 3电脑 4公众号 5小程序 */
    private Integer platform;

    /** 用户账号 */
    @Excel(name = "用户账号")
    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
    private String username;

    /** 密码 */
    @Encrypt
    private String password;

    /** 用户昵称 */
    @Excel(name = "用户昵称")
    private String nickname;

    /** 真实姓名 */
    @Excel(name = "真实姓名")
    private String realname;

    /** 用户类型0注册用户 1临时用户 */
    private Integer userType;

    /** 用户邮箱 */
    private String email;

    /** 用户性别（0男 1女 2未知） */
    private String sex;

    /** 头像地址 */
    @FileData
    private String avatar;

    /** 余额 */
    private BigDecimal balance;

    /** 账号审核状态（0待审核 1审核通过 2审核不通过） */
    private String checkStatus;

    /** 删除标志（0默认 1删除） */
    private Integer delFlag;

    /** 最后登录IP */
    @Excel(name = "最后登录IP")
    private String loginIp;

    @FileData
    private String cardFace;
    @FileData
    private String cardBack;

    private Integer personStatus;

    /** 最后登录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date loginDate;

    /** 出生年月 */
    private Date birthday;

    /** 消息推送接收状态：0接收 1不接收 */
    private Integer receivePushStatus;

    private Integer vip;



    /*
     * 关注数
     */
    private Integer followNumber;


    /**
     * 粉丝数
     */
    private Integer fansNumber;


    private Integer isFollow;


    /** 企业认证 0 未认证  1提交 2 认证 3 驳回 */
    //@Excel(name = "企业认证 0 未认证  1提交 2 认证 3 驳回")
    private Integer companyAuthStatus;

    /** BP认证  0 未认证  1 提交 2 认证  3 驳回 */
    //@Excel(name = "BP认证  0 未认证  1 提交 2 认证  3 驳回")
    private Integer bpAuthStatus;

    /** 高校认证  0 未认证  1 提交 2 认证  3 驳回 */
    //@Excel(name = "高校认证  0 未认证  1 提交 2 认证  3 驳回")
    private Integer schoolAuthStatus;

    /** 投资认证  0 未认证  1 提交 2 认证  3 驳回 */
    //@Excel(name = "投资认证  0 未认证  1 提交 2 认证  3 驳回")
    private Integer investAuthStatus;

    /** 用户标签 */
    //@Excel(name = "用户标签")
    private String userLable;

    /** 行业类别 */
    //@Excel(name = "行业类别")
    private String workType;

    /** 行业经验 */
    //@Excel(name = "行业经验", width = 30, dateFormat = "yyyy-MM-dd")
    private String workTime;

    /** 省 */
    //@Excel(name = "省")
    private Long pid;

    /** 市 */
    //@Excel(name = "市")
    private Long cid;

    /** 区 */
    //@Excel(name = "区")
    private Long qid;

    /** 城市地址 */
    //@Excel(name = "城市地址")
    private String address;

    /** 教育经历 */
    //@Excel(name = "教育经历")
    private String education;

    /** 创业经历 */
    //@Excel(name = "创业经历")
    private String entrepreneurship;

    /** 微信绑定的ip */
    //@Excel(name = "微信绑定的ip")
    private String wechatId;



    private String companyPic;

    private String bpPic;


    private String schoolPic;

    private String investPic;


    /**
     * 匹配次数
     */
    private Integer matchNumber;



    /** 0 默认接收消息   1 不接受消息 */
    @Excel(name = "0 默认接收消息   1 不接受消息")
    private Integer isReceive;


    private String code;


    private Integer isTop;

    /** 最后登录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "置顶过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date topTime;

    /** 最后登录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date overTime;

    public void setUid(Long uid) {
        this.uid = uid;
    }

    public Long getUid() {
        return uid;
    }

    public void setPlatform(Integer platform) {
        this.platform = platform;
    }

    public Integer getPlatform() {
        return platform;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getNickname() {
        return nickname;
    }

    public void setRealname(String realname) {
        this.realname = realname;
    }

    public String getRealname() {
        return realname;
    }

    public void setUserType(Integer userType) {
        this.userType = userType;
    }

    public Integer getUserType() {
        return userType;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmail() {
        return email;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getSex() {
        return sex;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setBalance(BigDecimal balance) {
        this.balance = balance;
    }

    public BigDecimal getBalance() {
        return balance;
    }

    public void setCheckStatus(String checkStatus) {
        this.checkStatus = checkStatus;
    }

    public String getCheckStatus() {
        return checkStatus;
    }

    public void setDelFlag(Integer delFlag) {
        this.delFlag = delFlag;
    }

    public Integer getDelFlag() {
        return delFlag;
    }

    public void setLoginIp(String loginIp) {
        this.loginIp = loginIp;
    }

    public String getLoginIp() {
        return loginIp;
    }

    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }

    public Date getLoginDate() {
        return loginDate;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setReceivePushStatus(Integer receivePushStatus) {
        this.receivePushStatus = receivePushStatus;
    }

    public Integer getReceivePushStatus() {
        return receivePushStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("uid", getUid())
                .append("createBy", getCreateBy()).append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime()).append("updateBy", getUpdateBy()).append("remark", getRemark())
                .append("platform", getPlatform()).append("username", getUsername()).append("password", getPassword())
                .append("nickname", getNickname()).append("realname", getRealname()).append("userType", getUserType())
                .append("email", getEmail()).append("sex", getSex()).append("avatar", getAvatar())
                .append("balance", getBalance()).append("checkStatus", getCheckStatus()).append("delFlag", getDelFlag())
                .append("loginIp", getLoginIp()).append("loginDate", getLoginDate()).append("birthday", getBirthday())
                .append("receivePushStatus", getReceivePushStatus()).toString();
    }

    public Integer getCompanyAuthStatus() {
        return companyAuthStatus;
    }

    public void setCompanyAuthStatus(Integer companyAuthStatus) {
        this.companyAuthStatus = companyAuthStatus;
    }

    public Integer getBpAuthStatus() {
        return bpAuthStatus;
    }

    public void setBpAuthStatus(Integer bpAuthStatus) {
        this.bpAuthStatus = bpAuthStatus;
    }

    public Integer getSchoolAuthStatus() {
        return schoolAuthStatus;
    }

    public void setSchoolAuthStatus(Integer schoolAuthStatus) {
        this.schoolAuthStatus = schoolAuthStatus;
    }

    public Integer getInvestAuthStatus() {
        return investAuthStatus;
    }

    public void setInvestAuthStatus(Integer investAuthStatus) {
        this.investAuthStatus = investAuthStatus;
    }

    public String getUserLable() {
        return userLable;
    }

    public void setUserLable(String userLable) {
        this.userLable = userLable;
    }

    public String getWorkType() {
        return workType;
    }

    public void setWorkType(String workType) {
        this.workType = workType;
    }

    public String getWorkTime() {
        return workTime;
    }

    public void setWorkTime(String workTime) {
        this.workTime = workTime;
    }

    public Long getPid() {
        return pid;
    }

    public void setPid(Long pid) {
        this.pid = pid;
    }

    public Long getCid() {
        return cid;
    }

    public void setCid(Long cid) {
        this.cid = cid;
    }

    public Long getQid() {
        return qid;
    }

    public void setQid(Long qid) {
        this.qid = qid;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEducation() {
        return education;
    }

    public void setEducation(String education) {
        this.education = education;
    }

    public String getEntrepreneurship() {
        return entrepreneurship;
    }

    public void setEntrepreneurship(String entrepreneurship) {
        this.entrepreneurship = entrepreneurship;
    }

    public String getWechatId() {
        return wechatId;
    }

    public void setWechatId(String wechatId) {
        this.wechatId = wechatId;
    }

    public Integer getIsReceive() {
        return isReceive;
    }

    public void setIsReceive(Integer isReceive) {
        this.isReceive = isReceive;
    }

    public Integer getVip() {
        return vip;
    }

    public void setVip(Integer vip) {
        this.vip = vip;
    }

    public String getCardFace() {
        return cardFace;
    }

    public void setCardFace(String cardFace) {
        this.cardFace = cardFace;
    }

    public String getCardBack() {
        return cardBack;
    }

    public void setCardBack(String cardBack) {
        this.cardBack = cardBack;
    }

    public Integer getPersonStatus() {
        return personStatus;
    }

    public void setPersonStatus(Integer personStatus) {
        this.personStatus = personStatus;
    }

    public String getCompanyPic() {
        return companyPic;
    }

    public void setCompanyPic(String companyPic) {
        this.companyPic = companyPic;
    }

    public String getBpPic() {
        return bpPic;
    }

    public void setBpPic(String bpPic) {
        this.bpPic = bpPic;
    }

    public String getSchoolPic() {
        return schoolPic;
    }

    public void setSchoolPic(String schoolPic) {
        this.schoolPic = schoolPic;
    }

    public String getInvestPic() {
        return investPic;
    }

    public void setInvestPic(String investPic) {
        this.investPic = investPic;
    }

    public Integer getMatchNumber() {
        return matchNumber;
    }

    public void setMatchNumber(Integer matchNumber) {
        this.matchNumber = matchNumber;
    }

    public Integer getFollowNumber() {
        return followNumber;
    }

    public void setFollowNumber(Integer followNumber) {
        this.followNumber = followNumber;
    }

    public Integer getFansNumber() {
        return fansNumber;
    }

    public void setFansNumber(Integer fansNumber) {
        this.fansNumber = fansNumber;
    }

    public Integer getIsFollow() {
        return isFollow;
    }

    public void setIsFollow(Integer isFollow) {
        this.isFollow = isFollow;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Date getOverTime() {
        return overTime;
    }

    public void setOverTime(Date overTime) {
        this.overTime = overTime;
    }

    public Integer getIsTop() {
        return isTop;
    }

    public void setIsTop(Integer isTop) {
        this.isTop = isTop;
    }

    public Date getTopTime() {
        return topTime;
    }

    public void setTopTime(Date topTime) {
        this.topTime = topTime;
    }
}